function [new_sched_bsmf_tracks, new_azimuth_intercepts, new_sched_iteration] = remove_impossible_targets(sched_bsmf_tracks, azimuth_intercepts, sched_iteration)
  new_sched_bsmf_tracks = sched_bsmf_tracks;
  new_azimuth_intercepts = azimuth_intercepts;
  new_sched_iteration = sched_iteration;
    
  while 1
    delete_tracks = [];
    
    [num_radars, num_targets] = size(new_azimuth_intercepts);
    
    allowed_sign = zeros(1, num_radars);

    for radar = 1:num_radars
      allowed_sign(radar) = sign(new_azimuth_intercepts(radar, end) - new_azimuth_intercepts(radar, 1));

      for target = 2:num_targets-1
        delta = new_azimuth_intercepts(radar, target)-new_azimuth_intercepts(radar, target-1);
        if (sign(delta) ~= 0) && (sign(delta) ~= allowed_sign(radar))
          delete_tracks = [delete_tracks target-1];
        end
      end
    end

    if isempty(delete_tracks)
      break
    end

    for delete_track = fliplr(delete_tracks)
      new_sched_bsmf_tracks = [new_sched_bsmf_tracks(1:delete_track-1) new_sched_bsmf_tracks(delete_track+1:end)];
      new_azimuth_intercepts = [new_azimuth_intercepts(:,1:delete_track) new_azimuth_intercepts(:,delete_track+2:end)];
      new_sched_iteration = [new_sched_iteration(1:delete_track) new_sched_iteration(delete_track+2:end)];
    end
  end

end